package com.javasm.springmybatis.async;

import com.javasm.springmybatis.common.util.SpringContainerUtils;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

/**
 * @Author：longjinyi
 * @Version：1.0
 * @Date：2021/12/31-7:59
 * @Since:jdk1.8
 * @Description:
 */
public class AsyncFactory {

    //接收邮件的邮箱号email和发送的邮件内容code从ssm数据库中admin表查询，并从SendEmailTask这里将查到的信息发送过来
    public static Runnable sendEmail(String email,String code) {

        Runnable runnable = () -> {
            //耗时操作，不同的线程去执行
            String name = Thread.currentThread().getName();

//            System.out.println("发邮件==========="+name);

            //设置验证码内容
//            String code = "mxt4488";
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            //设置发件人的名称和发送邮件的邮箱账号
            simpleMailMessage.setFrom("清华大学<cd262233@163.com>");
            //设置发送的邮件的主题
            simpleMailMessage.setSubject("验证码");
            //设置发送的邮件的内容
            simpleMailMessage.setText(code);
            //设置接收邮件的账号，账号可以给多个(即可以实现群发)
            simpleMailMessage.setTo(email);
            //将每次发送的验证码存进服务器，并设置失效时间
            //"redis_key"+email:设置存储进服务器的k是接收邮件的邮箱账号
            //code:要发送的验证码的内容
            //30:失效时间，单位秒，时间单位根据设置的失效时间单位决定
            //TimeUnit.SECONDS:设置失效时间单位
            //stringRedisTemplate.opsForValue().set("redis_key"+email,code,30,TimeUnit.SECONDS);

            //不采用自动注入获取javaMailSender对象，而是从工具类SpringContainerUtils里面的spring容器中直接去获取
            JavaMailSender javaMailSender = SpringContainerUtils.getBean(JavaMailSender.class);


            //发送邮件，根据send方法的括号里面要传的参数，new一个 SimpleMailMessage的对象
            //要发送信息存到对象simpleMailMessage里面
            javaMailSender.send(simpleMailMessage);

        };
        return runnable;
    }


    //实现定时任务加上异步任务去群发邮件
}
